package com.supermarket.manage.provider.api.instock;

import com.supermarket.manage.common.dto.PageBean;
import com.supermarket.manage.common.dto.home.request.HomeInitParams;
import com.supermarket.manage.common.dto.home.response.ProfitDataDto;
import com.supermarket.manage.common.dto.home.response.TopDto;
import com.supermarket.manage.common.dto.home.response.TrendDto;
import com.supermarket.manage.common.dto.stock.request.InstockPageParams;
import com.supermarket.manage.common.dto.stock.response.InstockDto;
import com.supermarket.manage.common.pojo.Instock;
import com.supermarket.manage.common.pojo.Supplier;

import java.util.List;

/**
 * @author Faxon
 * @version 1.0
 * @date 2020-03-14 18:41
 **/
public interface InstockService {
    /**
     * 新增入库单据
     *
     * @param instock
     * @return
     */
    Boolean addInstock(Instock instock);

    /**
     * 更新入库单据
     *
     * @param instock
     * @return
     */
    Boolean updateInstock(Instock instock);

    /**
     * 新增入库单据并修改商品库存
     *
     * @param instock
     * @return
     */
    Boolean addInstockAndUpdateStockingNumber(Instock instock);

    /**
     * 更新入库单据并修改商品库存
     *
     * @param instock
     * @return
     */
    Boolean updateInstockAndUpdateStockingNumber(Instock instock);

    /**
     * 根据id完成入库单
     *
     * @param instock
     * @return
     */
    Boolean doneInstockById(Instock instock);

    /**
     * 根据id删除入库单
     *
     * @param id
     * @return
     */
    Boolean deleteInstockById(String id);

    /**
     * 条件分页查询入库单
     *
     * @param params
     * @return
     */
    PageBean<Instock> getInstockPageList(InstockPageParams params);

    /**
     * 根据id 获取入库单详情
     *
     * @param id
     * @return
     */
    InstockDto getInstockById(String id);

    /**
     * 获取入库相关金额
     *
     * @param params
     * @return
     */
    ProfitDataDto getPurchases(HomeInitParams params);

    /**
     * 获取采购趋势
     *
     * @param params
     * @return
     */
    List<TrendDto> getPurchaseTrend(HomeInitParams params);

    /**
     * 获取前五供应商
     *
     * @param params
     * @return
     */
    List<TopDto<String>> getTopSupplier(HomeInitParams params);

    /**
     * 获取单据列表
     *
     * @param params
     * @return
     */
    List<Instock> getInstockList(InstockPageParams params);
}
